<?php

//类的继承
	date_default_timezone_set("PRC");
//定义父类
class Human{
	public $name;
	public $height;
	public $weight;


	public function eat($food){
		echo $this->name.'\'s eatinf '.$food.'<br/>';
	}
}


//类的定义与实例化

//类的定义以关键字class开始，后面跟着这个类的名称。
//类的命名通常每个单词的第一个字母大写。以花括号开始结束。
// 继承： extends + 父类名称。
// 因为php的单继承原则，故只能继承一个类。
class Nbaplayer extends Human{
	//定义属性
	
	public $team = 'Bull';
	public $playerNum = '23';

	

	//构造函数   在对象被实例化的时候自动调用
	function __construct($name,$height,$weight,$team,$playerNum){
		echo "In NvaPlater!!!<br/>";
		//$this时PHP里面的伪变量，表示对象自身。
		//可以通过$this->的方式访问对象的属性和方法
		//父类中的属性，可以通过$this来访问
		$this->name = $name;
		$this->height = $height;
		$this->weight = $weight;
		$this->team = $team;
		$this->playerNum = $playerNum;
	}


	//析构函数，在程序执行结束的时候会自动调用
	//析构函数通常被用于清理程序使用的资源。
	function __destruct(){
		echo "Desttoying".$this->name.'<br/>';
	}

	//定义方法
	public function run(){
		echo "Running<br/>";
	}
	public function jump(){
		echo "Jumping<br/>";
	}
	public function dribble(){
		echo "Dribbling\n";
	}
	public function shoot(){
		echo "Shooting\n";
	}
	public function dunk(){
		echo "Dunking\n";
	}
	public function pass(){
		echo "Passing<br/>";
	}

}
//类到对象的实例化
//类的实例化为对象时使用关键字new，之后紧跟类的名称和（）；
//Nbaplayer里的值传给function __construct()，修改默认值
//每一次用new实例化对象的时候，都会用类名后面的参数列表调用构造函数

$jordan = new Nbaplayer('jrdan','198cm','98kg','Bull','23');


//对象中属性成员可以通过->访问
echo $jordan->name.'<br/>';

$jordan->eat('Apple');
//在子类的对象上可以直接访问父类中定义的方法和属性

?>